#ifndef GY_FORMATDOUBLE_H
#define GY_FORMATDOUBLE_H

#include "GY_BasicsCalculators.h"

class GY_CONTROLLIBRARY_EXPORT GY_FormatDouble : public GY_BasicsCalculators
{
    Q_OBJECT

public:
    explicit Q_INVOKABLE GY_FormatDouble(const QString &guid,QGraphicsItem *parent = nullptr);
    ~GY_FormatDouble(){};

private:
    /**
     * @brief initializationPropertyInfo 初始化属性信息
     */
    void initializationPropertyInfo();
    /**
     * @brief updateValue 更新属性值
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateValue(const QString &name, const QVariant &value);
    /**
     * @brief updateMinLength 更新最小字符长度
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateMinLength(const QString &name, const QVariant &value);
    /**
     * @brief updateMaxLength 更新最大字符长度
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateMaxLength(const QString &name, const QVariant &value);
    /**
     * @brief updateNumDecimalPlaces 更新小数点位数
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateNumDecimalPlaces(const QString &name, const QVariant &value);
    /**
     * @brief updatePlusSignMethod 更新前置符号
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updatePlusSignMethod(const QString &name, const QVariant &value);
    /**
     * @brief updateLeadingZeros 更新字符长度不够最小长度时是否补0，还是空格
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateLeadingZeros(const QString &name, const QVariant &value);
    /**
     * @brief updateOverflowCharCapapcity 更新属性值
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateOverflowCharCapapcity(const QString &name, const QVariant &value);
    /**
     * @brief updateOverflowChar 更新溢出时output填充符号
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateOverflowChar(const QString &name, const QVariant &value);
    /**
     * @brief updateOutputCapacity 更新输出字符长度限制
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateOutputCapacity(const QString &name, const QVariant &value);
    /**
     * @brief updateOutput 更新输出字符
     * @param name 属性名称
     * @param value 属性值
     * @return 返回更新是否成功
     */
    bool updateOutput(const QString &name, const QVariant &value);
    /**
     * @brief setOutput  设置输出字符串
     */
    void setOutput();

};

#endif // GY_FORMATDOUBLE_H
